The Network Configuration (“NETCONF”) protocol may be used to install, manipulate, and delete the management data of network devices. Management data includes configuration data and state data. In general, configuration data comprises the set of writeable data of the network device required to transform the network device from an initial state to a current state. State data comprises additional data of the network device that is not configuration data such as read-only status information and collected statistics.
The NETCONF protocol uses a remote procedure call (RPC)-based mechanism to facilitate network communications between a NETCONF client and a NETCONF server. Typically, the NETCONF client is a script or application running as part of a network management system and the NETCONF server is a network device. To install, manipulate, or delete the management data of a network device, the client encodes an RPC message in eXtensible Markup Language (XML) and sends the message to the network device using a secure, connection-oriented session. The network device responds with a reply message also encoded in XML.
The NETCONF protocol defines mechanisms that provide an asynchronous message notification delivery service. A client can indicate interest in receiving event notifications from a network device. The network device replies to indicate whether the subscription request was successful and, if it was successful, begins sending the event notifications to the client as events occur. The NETCONF protocol may serve as a supplementary network management protocol to the currently widely employed Simple Network Management Protocol (SNMP). For further description of the NETCONF protocol, see e.g., “NETCONF Configuration Protocol”, a current Internet Engineering Task Force (IETF) proposed standard dated December 2006, the disclosure of which is hereby incorporated by reference as if fully set forth herein. A copy of this IETF proposed standard is available via the Internet (e.g., currently at /rfc/rfc4741.txt in the www.rfc-editor.org domain).
While the NETCONF protocol provides a building block for constructing a system for automated management of network devices, the NETCONF protocol does not provide a standardized way to create data models for management data, remote procedural calls (RPCs), and notifications. To that end, a data modeling language known as YANG is available for the NETCONF protocol. A YANG data model is structured as a module and zero or more sub-modules. A YANG data model defines a hierarchy of data which can be used for NETCONF-based operations, including configuration data, state data, remote procedure calls (RPCs), and notifications. The hierarchical organization of data is modeled as a tree in which each node has a name, and either a value or a set of one or more child nodes. A data model defined using YANG can be instantiated as XML data. The hierarchical structure of the XML data resembles the hierarchical organization of the YANG data model. A YANG data model may be authored by YANG module writers and YANG-tool chain developers using highly-readable C programming language-like syntax. For further description of YANG, see e.g., “YANG—A data modeling language for the Network Configuration Protocol (NETCONF)”, a current Internet Engineering Task Force (IETF) proposed standard dated October 2010, the disclosure of which is hereby incorporated by reference as if fully set forth herein. A copy of this IETF proposed standard is available via the Internet (e.g., currently at /html/rfc6020 in the tools.ietf.org domain).
The YANG data modeling language provides a standardized and vendor-neutral way by which to model NETCONF configuration data, state data, remote procedure calls, and notifications. Currently, YANG data models are typically authored “by hand” using little more than a text editor or a word processor. Such manual authoring is tedious, time-consuming, and error-prone and slows the adoption and implementation of the NETCONF protocol by network operators.